A distributed system generally includes many loosely coupled computers, each of which typically includes a computing resource (e.g., one or more processors) and/or storage resources (e.g., memory, flash memory, and/or disks). In the distributed storage system, a server process running on one computer may export that computer's storage resources to client processes running on other computers. A client appreciates that his/her data stored on the storage resources remains explicitly under the client's control. Therefore, many storage systems encrypt the client's data using an encryption key to ensure that the client's data is secure and only retrievable by the client. However, storage systems may be exposed to a data breach, and if the encryption key used for encrypting the client data is also stored on the storage resources, then a hacker may be able to access the client's data. Therefore, it is desirable to design storage resources that are capable of protecting client's data stored on the storage resources even when the data is compromised.